

https://leetcode.cn/problems/as-far-from-land-as-possible/description/
//class Solution {
//public:
//    int dx[4] = { 0,0,-1,1 };
//    int dy[4] = { 1,-1,0,0 };
//    int maxDistance(vector<vector<int>>& grid) {
//        int m = grid.size(), n = grid[0].size();
//        vector<vector<int>> newg(m, vector<int>(n, -1));
//        queue<pair<int, int>> q;
//
//        for (int i = 0; i < m; i++) {
//            for (int j = 0; j < n; j++) {
//                if (grid[i][j]) {
//                    newg[i][j] = 0;
//                    q.push({ i,j });
//                }
//            }
//        }
//
//        int max1 = -1;
//        while (q.size()) {
//            auto [a, b] = q.front();
//            q.pop();
//            for (int k = 0; k < 4; k++) {
//                int x = dx[k] + a;
//                int y = dy[k] + b;
//                if (x >= 0 && x < m && y >= 0 && y < n && newg[x][y] == -1) {
//                    newg[x][y] = newg[a][b] + 1;
//                    q.push({ x,y });
//                    max1 = max(max1, newg[x][y]);
//                }
//            }
//        }
//        return max1;
//    }
//};

https://leetcode.cn/problems/map-of-highest-peak/description/
//class Solution {
//public:
//
//    int dx[4] = { 0,0,-1,1 };
//    int dy[4] = { 1,-1,0,0 };
//    vector<vector<int>> highestPeak(vector<vector<int>>& isWater) {
//
//        int m = isWater.size(), n = isWater[0].size();
//        vector<vector<int>> newis(m, vector<int>(n, -1));
//        queue<pair<int, int>> q;
//
//        for (int i = 0; i < m; i++) {
//            for (int j = 0; j < n; j++) {
//                if (isWater[i][j]) {
//                    q.push({ i,j });
//                    newis[i][j] = 0;
//                }
//            }
//        }
//
//        while (q.size()) {
//            auto [a, b] = q.front();
//            q.pop();
//            for (int k = 0; k < 4; k++) {
//                int x = a + dx[k];
//                int y = b + dy[k];
//                if (x >= 0 && x < m && y >= 0 && y < n && newis[x][y] == -1) {
//                    newis[x][y] = newis[a][b] + 1;
//                    q.push({ x,y });
//                }
//            }
//        }
//        return newis;
//    }
//};